package br.com.klis.batendoumabola.client.widgets;

import java.util.ArrayList;
import java.util.List;

import br.com.klis.batendoumabola.client.resources.Resources;
import br.com.klis.batendoumabola.shared.LoginInfo;
import br.com.klis.batendoumabola.shared.Pelada;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.maps.client.InfoWindow;
import com.google.gwt.maps.client.InfoWindowContent;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.control.LargeMapControl;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.overlay.Marker;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLTable;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.StackPanel;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.datepicker.client.DateBox;

public class ContentVerticalPanel extends Composite{
	//private VerticalPanel contentPanel = new VerticalPanel();
	private VerticalPanel dynamicPanel = new VerticalPanel();
	private final StackPanel stackPanel = new StackPanel();
	private MapWidget map;
	private LoginInfo loginInfo;
	
	//Editar
	private VerticalPanel formEdicao = new VerticalPanel();
	private FlexTable layoutFormEdicao = new FlexTable();
	private TextBox idTextBox = new TextBox();
	private TextBox nomeTextBox = new TextBox();
	private TextArea descricaoTextArea = new TextArea();
	private DateBox dataDateBox = new DateBox();
	private TextBox localTextBox = new TextBox();
	private TextBox logradouroTextBox = new TextBox();
	private TextBox numeroTextBox = new TextBox();
	private TextBox bairroTextBox = new TextBox();
	private TextBox cidadeTextBox = new TextBox();
	private TextBox estadoTextBox = new TextBox();
	private CheckBox temVagasCheckBox = new CheckBox();
	private CheckBox gratuitoCheckBox = new CheckBox();
	private Button saveButton = new Button("Salvar");
	private Button cancelButton = new Button("Cancelar");
	private Button showMapButton = new Button("Visualizar Mapa");
	private HTML linhaEmBranco = new HTML("<br>");
	private ImagemPanel imgPanel;
	
	private FormPanel form = new FormPanel();
	private Button submit = new Button("Submit");
	
	public FormPanel getForm() {
		return form;
	}

	public Button getSubmit() {
		return submit;
	}
	//Pesquisar
	private FlexTable formPesquisa = new FlexTable();
	private TextBox qualTextBox = new TextBox();
	private DateBox quandoDateBox = new DateBox();
	private TextBox ondeTextBox = new TextBox();
	private TextBox ondeLocalTextBox = new TextBox();
	private RadioButton detalheVagasSim = new RadioButton("detalheComVaga", "Sim");
	private RadioButton detalheVagasNao = new RadioButton("detalheComVaga", "Não");
	private HorizontalPanel detalheVagasRadioBar = new HorizontalPanel();
	private RadioButton detalheGratuitoSim = new RadioButton("detalheGratuito", "Sim");
	private RadioButton detalheGratuitoNao = new RadioButton("detalheGratuito", "Não");
	private HorizontalPanel detalheGratuitoRadioBar = new HorizontalPanel();
	private Button searchButton = new Button("Pesquisar");
	
	//Result
	private VerticalPanel resultadosPesquisa = new VerticalPanel();
	private FlexTable tableResultados = new FlexTable();
	private Image deleteImage = new Image(Resources.INSTANCE.delete());
	private Label ajudaLabel = new Label("Para editar ou visualizar os detalhes do Bate-Bola clique sobre a linha correspondente.");
	private Label noResultLabel = new Label("Não houve retorno para o critério de pesquisa");
	private Button atualizarDadosAdmButton = new Button("Atualizar Dados Adm");
	
	//Dados
	private List<Pelada> peladas = new ArrayList<Pelada>();
	
	public ContentVerticalPanel(LoginInfo loginInfo){
		GWT.log("init content panel...");
		this.loginInfo = loginInfo;
		
		stackPanel.setSize("100%", "100%");
		dynamicPanel.setSize("100%", "100%");
		String tit = "Procurando um Bate-Bola?";
		stackPanel.add(dynamicPanel,tit,false);
		
		setFormPesquisa(tit);
		
		initWidget(stackPanel);
	}
	
	public void newFormPesquisa(){
		formPesquisa.getColumnFormatter().setWidth(0, "10%");
		formPesquisa.getColumnFormatter().setWidth(1, "10%");
		
		resetFormPesquisa();
		
		Label qualLabel = new Label("Qual?");
		formPesquisa.getFlexCellFormatter().setColSpan(0, 0, 3);
		formPesquisa.getCellFormatter().addStyleName(0, 0, "PesquisaTitle");
		formPesquisa.setWidget(0, 0, qualLabel);
				
		Label nomePesqLabel = new Label("Nome:");
		formPesquisa.setWidget(1, 1, nomePesqLabel);
		formPesquisa.setWidget(1, 2, qualTextBox);
			    
		Label quandoLabel = new Label("Quando?");
		formPesquisa.getFlexCellFormatter().setColSpan(2, 0, 3);
		formPesquisa.getCellFormatter().addStyleName(2, 0, "PesquisaTitle");
		formPesquisa.setWidget(2, 0, quandoLabel);
				
		Label dataPesqLabel = new Label("Data:");
		formPesquisa.setWidget(3, 1, dataPesqLabel);
		quandoDateBox.setFormat(new DateBox.DefaultFormat(DateTimeFormat.getMediumDateFormat()));
		formPesquisa.setWidget(3, 2, quandoDateBox);
	    
		Label ondeLabel = new Label("Onde?");
		formPesquisa.getFlexCellFormatter().setColSpan(4, 0, 3);
		formPesquisa.getCellFormatter().addStyleName(4, 0, "PesquisaTitle");
		formPesquisa.setWidget(4, 0, ondeLabel);
		
		Label cidadePesqLabel = new Label("Cidade:");
		formPesquisa.setWidget(5, 1, cidadePesqLabel);
		formPesquisa.setWidget(5, 2, ondeTextBox);
		
		Label localPesqLabel = new Label("Local:");
		formPesquisa.setWidget(6, 1, localPesqLabel);
		formPesquisa.setWidget(6, 2, ondeLocalTextBox);
	    
		Label detalheLabel = new Label("Detalhes");
		formPesquisa.getFlexCellFormatter().setColSpan(7, 0, 3);
		formPesquisa.getCellFormatter().addStyleName(7, 0, "PesquisaTitle");
		formPesquisa.setWidget(7, 0, detalheLabel);
		
		Label detalheComVagaPesqLabel = new Label("Com Vaga?");
		detalheVagasRadioBar.add(detalheVagasSim);
		detalheVagasRadioBar.add(detalheVagasNao);
		formPesquisa.setWidget(8, 1, detalheComVagaPesqLabel);
		formPesquisa.setWidget(8, 2, detalheVagasRadioBar);
		
		Label detalheGratuitoPesqLabel = new Label("Gratuito?");
		detalheGratuitoRadioBar.add(detalheGratuitoSim);
		detalheGratuitoRadioBar.add(detalheGratuitoNao);
		formPesquisa.setWidget(9, 1, detalheGratuitoPesqLabel);
		formPesquisa.setWidget(9, 2, detalheGratuitoRadioBar);
		
		searchButton.setStyleName("botao");
		formPesquisa.setWidget(10, 2,searchButton);
		
		qualTextBox.setWidth("95%");
		quandoDateBox.setWidth("95%");
		ondeTextBox.setWidth("95%");
		ondeLocalTextBox.setWidth("95%");
		formPesquisa.setSize("100%", "100%");
	}
	
	public void resetFormPesquisa(){
		qualTextBox = new TextBox();
		quandoDateBox = new DateBox();
		ondeTextBox = new TextBox();
		ondeLocalTextBox = new TextBox();
		logradouroTextBox = new TextBox();
		detalheVagasSim.setValue(false);
		detalheVagasNao.setValue(false);
		detalheGratuitoSim.setValue(false);
		detalheGratuitoNao.setValue(false);
	}
	
	public void setFormPesquisa(String titulo){
		stackPanel.setStackText(0, titulo);
		dynamicPanel.clear();
		newFormPesquisa();
		dynamicPanel.add(formPesquisa);
	}
	
	public void setFormEdicao(String titulo){
		stackPanel.setStackText(0, titulo);
		if (dynamicPanel.getWidgetIndex(map) != -1){
			dynamicPanel.remove(map);	
		}
		if (dynamicPanel.getWidgetIndex(resultadosPesquisa) != -1){
			dynamicPanel.remove(resultadosPesquisa);	
		}
		if (dynamicPanel.getWidgetIndex(formPesquisa) != -1){
			dynamicPanel.remove(formPesquisa);	
		}
		newFormEdicao();
		dynamicPanel.add(formEdicao);
	}
	
	public void cancelaFormEdicaoMeus(){
		cancelaFormEdicao("");
	}
	public void cancelaFormEdicaoDefault(){
		cancelaFormEdicao("default");
	}
	private void cancelaFormEdicao(String origem){
		if (dynamicPanel.getWidgetIndex(map) != -1){
			dynamicPanel.remove(map);	
		}
		if (dynamicPanel.getWidgetIndex(formEdicao) != -1){
			dynamicPanel.remove(formEdicao);	
		}
		if (origem.equals("default")){
			dynamicPanel.add(formPesquisa);	
		}
		if (peladas != null && peladas.size() > 0){
			dynamicPanel.add(resultadosPesquisa);	
		}
	}
	
	public void setResultados(List<Pelada> vpeladas){
		peladas = vpeladas;
		newResultadosPesquisa(peladas);
		dynamicPanel.add(resultadosPesquisa);
	}
	
	public void setMeusResultados(List<Pelada> vpeladas){
		stackPanel.setStackText(0, "Meus Bate-Bolas");
		peladas = vpeladas;
		dynamicPanel.clear();
		newResultadosPesquisa(peladas);
		dynamicPanel.add(resultadosPesquisa);
	}
	
	public void newFormEdicao(){
		formEdicao.setSize("100%", "100%");
		idTextBox.setVisible(false);
		formEdicao.add(idTextBox);
		layoutFormEdicao.setSize("100%", "100%");
		layoutFormEdicao.getColumnFormatter().setWidth(0, "15%");
		int contLinha = 0;
		
		layoutFormEdicao.getFlexCellFormatter().setColSpan(contLinha, 0, 2);
		layoutFormEdicao.getCellFormatter().addStyleName(0, 0, "PesquisaTitle");
		layoutFormEdicao.setWidget(0, 0, new Label("Dados Básicos"));
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Nome:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		nomeTextBox.setWidth("90%");
		layoutFormEdicao.setWidget(contLinha, 1, nomeTextBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Informações:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		descricaoTextArea.setWidth("90%");
		descricaoTextArea.setVisibleLines(10);
		layoutFormEdicao.setWidget(contLinha, 1, descricaoTextArea);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Data:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		dataDateBox.setFormat(new DateBox.DefaultFormat(DateTimeFormat.getMediumDateFormat()));
		layoutFormEdicao.setWidget(contLinha, 1, dataDateBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Tem Vagas:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		layoutFormEdicao.setWidget(contLinha, 1, temVagasCheckBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Gratuito:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		layoutFormEdicao.setWidget(contLinha, 1, gratuitoCheckBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Local:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		localTextBox.setWidth("90%");
		layoutFormEdicao.setWidget(contLinha, 1, localTextBox);
		contLinha++;
		
		layoutFormEdicao.getFlexCellFormatter().setColSpan(contLinha, 0, 2);
		layoutFormEdicao.getCellFormatter().addStyleName(contLinha, 0, "PesquisaTitle");
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Endereço"));
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Logradouro:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		logradouroTextBox.setWidth("90%");
		layoutFormEdicao.setWidget(contLinha, 1, logradouroTextBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Número:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		layoutFormEdicao.setWidget(contLinha, 1, numeroTextBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Bairro:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		bairroTextBox.setWidth("90%");
		layoutFormEdicao.setWidget(contLinha, 1, bairroTextBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Cidade:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		cidadeTextBox.setWidth("90%");
		layoutFormEdicao.setWidget(contLinha, 1, cidadeTextBox);
		contLinha++;
		
		layoutFormEdicao.setWidget(contLinha, 0, new Label("Estado:"));
		layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_RIGHT);
		layoutFormEdicao.setWidget(contLinha, 1, estadoTextBox);
		contLinha++;
		
		HorizontalPanel barraBotoes = new HorizontalPanel();
		saveButton.setStyleName("botao");
		barraBotoes.add(saveButton);
		cancelButton.setStyleName("botao");
		barraBotoes.add(cancelButton);
		layoutFormEdicao.setWidget(contLinha, 1, barraBotoes);
		contLinha++;
		
		if (idTextBox.getValue() == null || idTextBox.getValue().equals("")){
			saveButton.setText("Salvar");
		}else{
			saveButton.setText("Atualizar");
			showMapButton.setStyleName("botao");
			layoutFormEdicao.setWidget(contLinha, 1, showMapButton);
			contLinha++;
			
			layoutFormEdicao.getFlexCellFormatter().setColSpan(contLinha, 0, 2);
			layoutFormEdicao.getCellFormatter().addStyleName(contLinha, 0, "PesquisaTitle");
			layoutFormEdicao.setWidget(contLinha, 0, new Label("Imagens"));
			contLinha++;
			
			layoutFormEdicao.getFlexCellFormatter().setColSpan(contLinha, 0, 2);
			imgPanel = new ImagemPanel(getIdTextBox().getValue(),loginInfo);
			layoutFormEdicao.getFlexCellFormatter().setHorizontalAlignment(contLinha, 0, HasHorizontalAlignment.ALIGN_CENTER);
			layoutFormEdicao.setWidget(contLinha, 0, imgPanel);
			
			
			//dynamicPanel.add(formEdicao);
			//dynamicPanel.add(imgPanel);
		}
		formEdicao.add(layoutFormEdicao);
		
		
		//fim

	}
	
	public void reset(){
		idTextBox = new TextBox();
		nomeTextBox = new TextBox();
		descricaoTextArea = new TextArea();
		dataDateBox = new DateBox();
		localTextBox = new TextBox();
		logradouroTextBox = new TextBox();
		numeroTextBox = new TextBox();
		bairroTextBox = new TextBox();
		cidadeTextBox = new TextBox();
		estadoTextBox = new TextBox();
		temVagasCheckBox = new CheckBox();
		gratuitoCheckBox = new CheckBox();
	}
	
	public void setFormEdicaoEnabled(Boolean var){
		Boolean readOnly;
		if (var){
			readOnly = false;
		}else{
			readOnly = true;
		}
		nomeTextBox.setReadOnly(readOnly);
		descricaoTextArea.setReadOnly(readOnly);
		dataDateBox.setEnabled(var);
		localTextBox.setReadOnly(readOnly);
		logradouroTextBox.setReadOnly(readOnly);
		numeroTextBox.setReadOnly(readOnly);
		bairroTextBox.setReadOnly(readOnly);
		cidadeTextBox.setReadOnly(readOnly);
		estadoTextBox.setReadOnly(readOnly);
		temVagasCheckBox.setEnabled(var);
		gratuitoCheckBox.setEnabled(var);
		saveButton.setEnabled(var);
		imgPanel.setEnabled(var);
		if (var){
			GWT.log("Setando o form como editavel...");
			nomeTextBox.setFocus(true);
		}else{
			GWT.log("Setando o form como readOnly...");
		}
	}
	
	public void geraMapa(String address, LatLng point){
		if (dynamicPanel.getWidgetIndex(map) != -1){
			dynamicPanel.remove(map);
		}
		map = new MapWidget(point, 15);
		map.setSize("500px", "300px");
		map.addControl(new LargeMapControl());  
		Marker marker = new Marker(point);
        map.addOverlay(marker);
        InfoWindow info = map.getInfoWindow();
        info.open(marker, new InfoWindowContent(address));
        dynamicPanel.add(map);
	}
	
	public void newResultadosPesquisa(List<Pelada> xpeladas){
		resultadosPesquisa.clear();
		resultadosPesquisa.setSize("100%", "100%");
		peladas = xpeladas;
		deleteImage.setTitle("Excluir Selecionados");
		tableResultados.setCellSpacing(0);
		tableResultados.setCellPadding(0);
	    tableResultados.setWidth("100%");
	    tableResultados.addStyleName("FlexTable");
	    tableResultados.getColumnFormatter().setWidth(0, "15px");
	    tableResultados.removeAllRows();
	    Pelada pelada = null;
	    if (peladas.size() > 0){
	    	if(loginInfo.isLoggedIn()){
	    		tableResultados.setWidget(0, 0, deleteImage);
	    		tableResultados.getCellFormatter().addStyleName(0, 0, "FlexTable-ColumnLabelCell");
	    	}
	    	tableResultados.setWidget(0, 1, new Label("Nome"));
	    	tableResultados.getCellFormatter().addStyleName(0, 1, "FlexTable-ColumnLabelCell");
	    	tableResultados.setWidget(0, 2, new Label("Data"));
	    	tableResultados.getCellFormatter().addStyleName(0, 2, "FlexTable-ColumnLabelCell");
	    	tableResultados.setWidget(0, 3, new Label("Cidade"));
	    	tableResultados.getCellFormatter().addStyleName(0, 3, "FlexTable-ColumnLabelCell");
	    	tableResultados.setWidget(0, 4, new Label("Bairro"));
	    	tableResultados.getCellFormatter().addStyleName(0, 4, "FlexTable-ColumnLabelCell");
	    	tableResultados.setWidget(0, 5, new Label("Local"));
	    	tableResultados.getCellFormatter().addStyleName(0, 5, "FlexTable-ColumnLabelCell");
	    	tableResultados.setWidget(0, 6, new Label("Gratuito"));
	    	tableResultados.getCellFormatter().addStyleName(0, 6, "FlexTable-ColumnLabelCell");
	    	tableResultados.setWidget(0, 7, new Label("Vagas"));
	    	tableResultados.getCellFormatter().addStyleName(0, 7, "FlexTable-ColumnLabelCell");
	    	for (int i = 1; i <= peladas.size(); i++) {
	    		pelada = peladas.get(i-1);
	    		if(loginInfo.isLoggedIn() && loginInfo.getEmailAddress().equals(pelada.getUser())){
	    			tableResultados.setWidget(i, 0, new CheckBox());	
	    		}
	    		tableResultados.getCellFormatter().addStyleName(i, 0, "FlexTable-Cell");
	    		tableResultados.setText(i, 1, pelada.getNome());
	    		tableResultados.getCellFormatter().addStyleName(i, 1, "FlexTable-Cell");
	    		tableResultados.setText(i, 2, (pelada.getData()==null?"":DateTimeFormat.getMediumDateFormat().format(pelada.getData())));
	    		tableResultados.getCellFormatter().addStyleName(i, 2, "FlexTable-Cell");
	    		tableResultados.setText(i, 3, (pelada.getCidade()));
	    		tableResultados.getCellFormatter().addStyleName(i, 3, "FlexTable-Cell");
	    		tableResultados.setText(i, 4, (pelada.getBairro()));
	    		tableResultados.getCellFormatter().addStyleName(i, 4, "FlexTable-Cell");
	    		tableResultados.setText(i, 5, (pelada.getLocal()));
	    		tableResultados.getCellFormatter().addStyleName(i, 5, "FlexTable-Cell");
	    		tableResultados.setText(i, 6, (pelada.getGratuito()?"Sim":"Não"));
	    		tableResultados.getCellFormatter().addStyleName(i, 6, "FlexTable-Cell");
	    		tableResultados.setText(i, 7, (pelada.getTemVagas()?"Sim":"Não"));
	    		tableResultados.getCellFormatter().addStyleName(i, 7, "FlexTable-Cell");
	    		
	      		if ((i % 2) != 0) {
	      			tableResultados.getRowFormatter().addStyleName(i, "FlexTable-OddRow");
	  			}else {
	  				tableResultados.getRowFormatter().addStyleName(i, "FlexTable-EvenRow");
	  			}
	    	}
	    	resultadosPesquisa.add(linhaEmBranco);
	    	resultadosPesquisa.add(ajudaLabel);
	    	resultadosPesquisa.add(tableResultados);
	    	
	    	/* Descomentar para fazer algum ajuste de dados
	    	resultadosPesquisa.add(atualizarDadosAdmButton);
	    	*/
	    }else{
	    	resultadosPesquisa.add(noResultLabel);	
	    }
	}
	
	public int getClickedRow(ClickEvent event) {
	    int selectedRow = -1;
	    HTMLTable.Cell cell = tableResultados.getCellForEvent(event);
	    
	    if (cell != null) {
	      // Suppress clicks if the user is actually selecting the 
	      //  check box
	      //
	      if (cell.getCellIndex() > 0) {
	        selectedRow = cell.getRowIndex()-1;
	      }
	    }
	    
	    return selectedRow;
	  }
	  
	public List<Integer> getSelectedRows() {
	    List<Integer> selectedRows = new ArrayList<Integer>();
	    
	    	for (int i = 1; i < tableResultados.getRowCount(); ++i) {
		    	
	  	      CheckBox checkBox = (CheckBox)tableResultados.getWidget(i, 0);
	  	      if (checkBox != null){
	  	    	if (checkBox.getValue()) {
		  	        selectedRows.add(i);
		  	      }  
	  	      }
	  	    }	
	    return selectedRows;
	  }
	
	public TextBox getIdTextBox() {
		return idTextBox;
	}
	public TextBox getNomeTextBox() {
		return nomeTextBox;
	}

	public TextArea getDescricaoTextArea() {
		return descricaoTextArea;
	}

	public DateBox getDataDateBox() {
		return dataDateBox;
	}

	public TextBox getQualTextBox() {
		return qualTextBox;
	}

	public DateBox getQuandoDateBox() {
		return quandoDateBox;
	}

	public TextBox getOndeTextBox() {
		return ondeTextBox;
	}
	
	public Button getCancelButton() {
		return cancelButton;
	}

	public Button getSearchButton() {
		return searchButton;
	}

	public Button getSaveButton() {
		return saveButton;
	}
	
	public Button getAtualizarDadosAdmButton() {
		return atualizarDadosAdmButton;
	}
	
	public FlexTable getContactsTable() {
		return tableResultados;
	}
	
	public HasClickHandlers getDeleteImage() {
		return deleteImage;
	}

	public TextBox getLocalTextBox() {
		return localTextBox;
	}

	public TextBox getLogradouroTextBox() {
		return logradouroTextBox;
	}

	public TextBox getNumeroTextBox() {
		return numeroTextBox;
	}

	public TextBox getBairroTextBox() {
		return bairroTextBox;
	}

	public TextBox getCidadeTextBox() {
		return cidadeTextBox;
	}

	public TextBox getEstadoTextBox() {
		return estadoTextBox;
	}

	public CheckBox getTemVagasCheckBox() {
		return temVagasCheckBox;
	}

	public CheckBox getGratuitoCheckBox() {
		return gratuitoCheckBox;
	}
	public TextBox getOndeLocalTextBox() {
		return ondeLocalTextBox;
	}
	public Button getShowMapButton() {
		return showMapButton;
	}
	public Boolean getDetalheVagas(){
		Boolean retorno;
		if (!detalheVagasSim.getValue()){
			if (!detalheVagasNao.getValue()){
				retorno = null;
			}else{
				retorno = false;
			}
		}else{
			retorno = true;
		}
		GWT.log("Retorno Get Detalhe Vaga: "+retorno);
		return retorno;
	}
	public Boolean getDetalheGratuito(){
		Boolean retorno;
		if (!detalheGratuitoSim.getValue()){
			if (!detalheGratuitoNao.getValue()){
				retorno = null;
			}else{
				retorno = false;
			}
		}else{
			retorno = true;
		}
		GWT.log("Retorno Get Detalhe Gratuito: "+retorno);
		return retorno;
	}
}
